import pymysql


class LogDB:
    def __init__(self):
        # 创建一个连接数据库的对象
        self.conn = pymysql.connect(
            host='localhost',  # 连接的数据库服务器主机名
            port=3306,  # 数据库端口号
            user='root',  # 数据库登录用户名
            passwd='123456',
            db='stock',  # 数据库名称
            charset='utf8',  # 连接编码
            cursorclass=pymysql.cursors.DictCursor
        )
        # 使用cursor()方法创建一个游标对象，用于操作数据库
        self.cur = self.conn.cursor()

    # 查询
    def search(self, sql):
        self.cur.execute(sql)
        result = self.cur.fetchall()  # 显示所有结果
        return result

    # 更新SQL
    def update(self, sql):
        try:
            self.cur.execute(sql)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后，需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()  # 记得关闭数据库连接

    # 插入SQL
    def insert(self, sql, value):
        try:
            self.cur.execute(sql, value)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后，需要执行提交操作
            return True
        except:
            # 发生错误时回滚
            self.conn.rollback()
            return False

    # 删除sql(实际没有此功能)
    def delete(self, sql):
        try:
            self.cur.execute(sql)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后，需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()

    # 参数为元组类型
    def insert_log(self, value):
        sql = "insert into t_log(strategy_name,op_time,stock_id,stock_name,op_name,stock_num,price) values" \
              "(%s,%s,%s,%s,%s,%s,%s)"
        flag = self.insert(sql, value)
        self.conn.close()
        if flag:
            return "日志记录成功"
        else:
            return "日志记录失败"

    def view_log(self):
        sql = "SELECT * FROM t_log"
        result = self.search(sql)
        return result

    def get_by_date_and_operation(self,date, op):
        self.cur.execute('select * from t_log where op_time = %s and op_name = %s', [date, op])
        result = self.cur.fetchall()  # 显示所有结果
        return result

if __name__ == '__main__':
    t = LogDB()
    print(t.insert_log(('ah_yijia', '2000-01-05', '600871.SH', '石化油服', 'buy', '0.0', '5.03')))
